#include "str_util.h"


// 假设max_tokens是数组tokens的最大大小
// 在使用后，要释放空间
//将一个字符串按照指定的分隔符分割成多个子串（tokens）
//并将这些子串存储在一个字符指针数组中。
//const char *pstrs：要被分割的原始字符串,const char *delimiter：分隔符
//char *tokens[]：用于存储分割后子串的字符指针数组
//max_tokens：tokens数组的最大容量
//*pcount：返回实际分割得到的子串数量
void splitString(const char * pstrs, const char * delimiter,
                 char *tokens[], int max_tokens, int * pcount) {
        int token_count =0;//实际分割出的子串数量
        char* token =strtok((char*)pstrs,delimiter); //使用delimiter作为分割符
        while(token!=NULL && token_count<max_tokens-1){
            char* pstr = (char*)calloc(1,strlen(token)+1);
            strcpy(pstr,token);
            tokens[token_count]=pstr;
            token_count++;
            token =strtok(NULL,delimiter);//NULL表示继续处理上一次的字符串
                        
        }
        //添加NULL终止符
        tokens[token_count]=NULL;
        *pcount = token_count;

}

void freeStrs(char * pstrs[], int count)
{
    for(int i = 0; i < count; ++i) {
        free(pstrs[i]);
    }
}
